package classreflex;

import java.lang.reflect.Constructor;

/**
 * 利用Class类的实例（反射）操作运行时类的构造器
 * @author 15594
 */
public class ConstructorTest {
    public static void main(String[] args) throws Exception {
        Person person  = new Person();
        Class<? extends Person> personClass = person.getClass();
        //1、直接使用Class实例对象的newInstance()方法操作无参构造器。
        Person person1 = personClass.newInstance();

        //2、获取公共的 。 注意：构造器中传递的参数，基本数据类型直接时基本数据类型的Class的实例，不是包裹类型
        Constructor<? extends Person> constructor = personClass.getConstructor(int.class,String.class,int.class);
        Person person2 = constructor.newInstance(1,"lihua",18);
        System.out.println(person2);

        //3、获取所有包括——包括私有
        Constructor<? extends Person> constructor1 = personClass.getDeclaredConstructor(int.class,String.class,int.class);
        Person person3 = constructor.newInstance(2,"xiaoming",28);
        System.out.println(person3);

    }
}
